package cn.wangdian.erp.sdk.api.setting;

import cn.wangdian.erp.sdk.Pager;
import cn.wangdian.erp.sdk.WdtErpException;
import cn.wangdian.erp.sdk.api.setting.dto.EmployeeSearchRequest;
import cn.wangdian.erp.sdk.api.setting.dto.EmployeeSearchResponse;
import cn.wangdian.erp.sdk.api.setting.dto.LogisticsQueryRequest;
import cn.wangdian.erp.sdk.api.setting.dto.LogisticsQueryResponse;
import cn.wangdian.erp.sdk.api.setting.dto.PurchaseProviderPushRequest;
import cn.wangdian.erp.sdk.api.setting.dto.PurchaseProviderPushResponse;
import cn.wangdian.erp.sdk.api.setting.dto.PurchaseProviderQueryRequest;
import cn.wangdian.erp.sdk.api.setting.dto.PurchaseProviderQueryResponse;
import cn.wangdian.erp.sdk.api.setting.dto.ShopQueryRequest;
import cn.wangdian.erp.sdk.api.setting.dto.ShopQueryResponse;
import cn.wangdian.erp.sdk.api.setting.dto.ShopUpdateRequest;
import cn.wangdian.erp.sdk.api.setting.dto.ShopUpdateResponse;
import cn.wangdian.erp.sdk.api.setting.dto.VirtualWarehouseOrderSearchRequest;
import cn.wangdian.erp.sdk.api.setting.dto.VirtualWarehouseOrderSearchResponse;
import cn.wangdian.erp.sdk.api.setting.dto.VirtualWarehouseSearchRequest;
import cn.wangdian.erp.sdk.api.setting.dto.VirtualWarehouseSearchResponse;
import cn.wangdian.erp.sdk.api.setting.dto.VirtualWarehouseStockSearchRequest;
import cn.wangdian.erp.sdk.api.setting.dto.VirtualWarehouseStockSearchResponse;
import cn.wangdian.erp.sdk.api.setting.dto.VirtualWarehouseTradeCreateRequest;
import cn.wangdian.erp.sdk.api.setting.dto.VirtualWarehouseTradeCreateResponse;
import cn.wangdian.erp.sdk.api.setting.dto.WarehouseQueryRequest;
import cn.wangdian.erp.sdk.api.setting.dto.WarehouseQueryResponse;
import cn.wangdian.erp.sdk.impl.Api;

import java.util.List;

public interface SettingAPI
{

	@Api(value = "setting.Warehouse.queryWarehouse", paged = true)
    WarehouseQueryResponse queryWarehouse(WarehouseQueryRequest request, Pager pager);

	@Api(value = "setting.PurchaseProvider.queryDetail" , paged = true)
    PurchaseProviderQueryResponse queryPurchaseProvider(PurchaseProviderQueryRequest request, Pager pager) throws WdtErpException;

	@Api(value = "setting.Shop.queryShop", paged = true)
    ShopQueryResponse search(ShopQueryRequest request, Pager pager) throws WdtErpException ;

	@Api(value = "setting.Logistics.queryLogistics", paged = true)
	LogisticsQueryResponse queryLogistics(LogisticsQueryRequest request, Pager pager) throws WdtErpException;

	@Api(value = "setting.PurchaseProvider.push")
	PurchaseProviderPushResponse purchaseProviderPush(PurchaseProviderPushRequest request) throws WdtErpException;

	@Api(value = "setting.Shop.updateShop")
	ShopUpdateResponse updateShop(ShopUpdateRequest request) throws WdtErpException;

	@Api(value = "setting.Employee.search", paged = true)
	EmployeeSearchResponse searchEmployee(EmployeeSearchRequest request, Pager pager) throws WdtErpException;

	@Api(value = "setting.strategy.VirtualWarehouse.warehouseSearch", paged = true)
	VirtualWarehouseSearchResponse searchVirtualWarehouse(VirtualWarehouseSearchRequest request, Pager pager) throws WdtErpException;

	@Api(value = "setting.strategy.VirtualWarehouse.stockSearch", paged = true)
	VirtualWarehouseStockSearchResponse searchVirtualWarehouseStock(VirtualWarehouseStockSearchRequest request, Pager pager) throws WdtErpException;

	@Api(value = "setting.strategy.VirtualWarehouse.create")
	VirtualWarehouseTradeCreateResponse createVirtualWarehouseTrade(VirtualWarehouseTradeCreateRequest.Order order, List<VirtualWarehouseTradeCreateRequest.Detail> detailList) throws WdtErpException;

	@Api(value = "setting.strategy.VirtualWarehouse.orderSearch", paged = true)
	VirtualWarehouseOrderSearchResponse searchVirtualWarehouseOrder(VirtualWarehouseOrderSearchRequest request, Pager pager) throws WdtErpException;
}
